package com.wondertek.poms.dao.bo;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.wondertek.poms.common.utils.StringUtil;
import com.wondertek.poms.dao.po.Content;
import com.wondertek.poms.dao.po.PrdCont;
import com.wondertek.poms.dao.po.PrdInfo;
import lombok.Data;
import net.sf.ehcache.util.ProductInfo;

import java.util.Date;

/**
 * @author gaozhengxing gaozhenghang@wondertek.com.cn
 * @date 2020/12/30 11:26
 * @description TODO
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class PrdContBo {

    private static final long serialVersionUID = 1L;
    public static final int BC_STATUS_NOT = 0;// 未播控
    public static final int BC_STATUS_YES = 1;// 播控通过
    public static final int BC_STATUS_NO = 2;// 播控拒绝
    public static final int DISTON_STATUS_NOT = 10; // 待分发
    public static final int DISTON_STATUS_IN = 11; // 分发中
    public static final int DISTON_STATUS_SUCCESS = 12; // 分发成功
    public static final int DISTON_STATUS_FAILURE = 13; // 分发失败
    public static final int DISTOFF_STATUS_NOT = 20; // 待下线
    public static final int DISTOFF_STATUS_IN = 21; // 下线中
    public static final int DISTOFF_STATUS_SUCCESS = 22; // 下线成功
    public static final int DISTOFF_STATUS_FAILURE = 23; // 下线失败

    public static final int PUBON_STATUS_NOT = 10; // 待发布
    public static final int PUBON_STATUS_IN = 11; // 发布中
    public static final int PUBON_STATUS_SUCCESS = 12; // 发布成功
    public static final int PUBON_STATUS_FAILURE = 13; // 发布失败
    public static final int PUBON_STATUS_NORULE = 30; // 发布无分发规则

    public static final int PUBOFF_STATUS_NOT = 20; // 待撤回
    public static final int PUBOFF_STATUS_IN = 21; // 撤回中
    public static final int PUBOFF_STATUS_SUCCESS = 22; // 撤回成功
    public static final int PUBOFF_STATUS_FAILURE = 23; // 撤回失败

    public static final int RECALL_STATUS_NO = 0;// 未发生撤回动作
    public static final int RECALL_STATUS_YES = 1;// 已发生撤回动作

    public static final int FILEACTION_STATUS_ADD = 0; // 新增
    public static final int FILEACTION_STATUS_UPDATE_NOT_MEDIA = 1; // 修改（不修改媒体文件）
    public static final int FILEACTION_STATUS_DELETE = 2; // 删除
    public static final int FILEACTION_STATUS_UPDATE_MEDIA = 3;// 修改（修改媒体文件）

    public static final String EMERGENCY_NO = "0";//非紧急
    public static final String EMERGENCY_YES = "1";//紧急

    public static final String IS_SUCCESS = "000000";//成功
    public static final String SYSTEM_BUSY = "100002"; //系统忙
    public static final String PARAMS_IS_NULL = "200001";//输入的必选参数为空
    public static final String CONTENT_NOT_EXIST = "300001"; //内容不存在
    public static final String CONTENT_NOT_DISPATCH_FAILURE_STATUS = "300002"; //内容不是分发失败状态
    public static final String OPERATOR_NOT_EXIST = "900001";	//操作员账号不存在
    public static final String ACCESS_PASSWORD_ERROR = "900002";	//接口访问密码错误
    public static final String BC_NOT_MATCHES = "900003";	//播控方不匹配
    public static final String SP_NOT_MATCHES = "900004";	//支撑方不匹配
    public static final String OPERATOR_NO_ACCESS_PERM = "900005";	//操作员账号无接口访问权限
    public static final String SECURE_VALIDATE_SUCCESS = "1";	//安全校验成功
    private Long prdContId; // 产品主键ID
    private Long mmsId; // 媒资ID
    private String contentId; // 内容Id
    private PrdInfo prdInfo; // 产品包
    private int bcStatus; // 播控状态
    private String bcPerson; // 播控人
    private Date bcTime; // 播控时间
    private int pubStatus; // 发布状态
    private Date pubTime; // 发布时间
    private Date distTime; // 分发时间
    private int distStatus; // 分发状态
    private Date createTime; // 产品内容创建时间
    private Long bcId; // 播控方ID
    private int fileAction; // 新增或变更（和content表中的status保持一致）
    private int recall; // 0：表示未发生撤回动作 1：表示撤回动作
    private int isDelete; // 0:表示未删除，1表示已删除（播控拒绝或不符合时下线删除），2表示手动删除（区分下线删除）， 4被相同媒资的内容替换后删除 5，变更后符合限制规则删除
    private String formType; // 1-视频;2-音频;3-图文;4-复合;5-内容集；6-剧集;7-单集;
    private String bcRefuseReason; // 播控拒绝原因
    private Long pubWebOperId; // ftp发布操作人
    private Long pubWebStatus; // ftp发布状态
    private Date pubWebTime;	//ftp发布时间
    private String productId; //计费产品ID   123,456,789
    private String isEmergency; //紧急标志
    private Integer publishNoVOMSStatus; //不通过VOMS的发布状态
    private Date publishNoVOMSTime; //不通过VOMS的发布时间
    private String levelval;
    private String rankval;
    private String longtitle;
    private String shorttitle;
    private Long salProductId; // 促销产品Id
    private Integer salCategory; //促销类型    1.预售  2.预订   3.限免
    private String startTime; // 开始时间
    private String endTime; //结束时间
    private String price;  // 基本资费的产品价格
    private String SalPrice;  //促销的产品价格
    private String orderFlag;// 0：包月  1：按次    7：免费
    private Long hits; //点击量
    private Date updateTime; //更新时间，用于搜索引擎增量更新
    private Integer isUpdating;//针对剧集壳，0：更新完成，1：更新中
    private String pushStatus;//推送状态：0-未推送，1-已推送
    private String pushTime;//推送时间

    private String operator; //节目上线下操作人(发布新操作人)
    private Integer hasPub;	//是否曾经发布过(0-未发布过， 1-发布过)，该字段用于剧集单集变更待发布后的缺集情况

    //发布的xml中是否显示productId 1：是 ，0 否
    private String isShowPrdId;

    //cisStatus必须配合 bcStatus=0 时使用
    /* 当(cisStatus=NULL || cisStatus='2') && bcStatus=0 时调用CIS新增节目接口
     * 当 (cisStatus=‘1’ || cisStatus='3') && bcStatus=0 && (fileAction=1||fileAction=3)时调用CIS变更节目接口
     */
    // NULL-新增未同步到CIS， 1-变更, 2-变更未同步到CIS， 3-变更或新增已同步到CIS或没有符合未来电视的媒体文件 4.没有cis所需媒体文件或媒体文件中无播放地址 5.有媒体文件节目更新
    private String cisStatus; //未来电视播控时使用, NULL-新增未同步到CIS， 1-新增已同步到CIS, 2-变更未同步到CIS， 3-变更已同步到CIS 4-节目集且无媒体内容或媒体内容无地址 7-已经删除的

    private String equityId;//权益
    private String sellingPrice;//售价名称计费
    private String isPersonOperation;//售价名称计费是否人工添加  1.是
    private Integer onTrial;//是否支持试看,0 不支持 1 支持,节目中该字段值为空时默认为支持；

    public PrdContBo() {
    }

    public PrdContBo(Content content, PrdInfo prdInfo) {
        this.prdInfo = prdInfo;
        this.contentId = content.getContentId();
        this.mmsId = Long.valueOf(content.getAssetId());
        this.bcStatus = PrdContBo.BC_STATUS_NOT;
        this.distStatus = PrdContBo.DISTON_STATUS_NOT;
        this.pubStatus = PrdContBo.PUBON_STATUS_NOT;
        this.recall = PrdContBo.RECALL_STATUS_NO;
        this.createTime = new Date();
        this.isEmergency = PrdContBo.EMERGENCY_NO;
        if (!StringUtil.isNullStr(content.getBcId())) {
            this.bcId = Long.valueOf(content.getBcId().trim());
        }

        this.fileAction = StringUtil.nullToInteger(content.getStatus());
        this.formType = content.getFormType();
        if ((content.getFormType() != null && content.getFormType().trim().equals("6")) ||
                (content.getCategory() != null && content.getCategory().trim().equals("3"))) {
            this.distStatus = PrdContBo.DISTON_STATUS_SUCCESS;
        }
        if(content.getFormType() != null && content.getFormType().trim().equals("9")){//专辑
            this.bcStatus = PrdContBo.BC_STATUS_YES;
            this.distStatus = PrdContBo.DISTON_STATUS_SUCCESS;
            this.pubStatus = PrdContBo.PUBON_STATUS_NORULE;
        }

        if(content.getFormType() != null && content.getFormType().trim().equals("14")){//播单
            this.bcStatus = PrdContBo.BC_STATUS_YES;
            this.distStatus = PrdContBo.DISTON_STATUS_SUCCESS;
            this.pubStatus = PrdContBo.PUBON_STATUS_NORULE;
        }
        if(prdInfo.getAutoVomsPublish() != null && prdInfo.getAutoVomsPublish()==1) {
            this.publishNoVOMSStatus = 10;
        }
        if(content.getHasVideo()!=null && !content.getHasVideo()) {//兼容媒资
            this.distStatus = PrdContBo.DISTON_STATUS_SUCCESS;
        }
    }

}
